package cn.utry.sipGateWay.sip;

import java.util.HashMap;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import io.netty.util.internal.StringUtil;


public class SessionContainer {
	private static final Logger log = LoggerFactory.getLogger(SessionContainer.class);
	private static Map<String, SipSession> sessionMap = new HashMap<String, SipSession>();
	
	public static SipSession getSession(String callId)
	{
		return sessionMap.get(callId);
	}
	/**
	 * 将SessionInfo缓存
	 * @param sessionInfo 实例对象中jobId不能为空
	 * @return true：缓存成功；false：缓存失败（一般因为jobId无效引起）
	 */
	public static boolean addSession(SipSession sipSession)
	{
		String callId = sipSession.getCallId();
		if(!StringUtil.isNullOrEmpty(callId)){
			synchronized (sessionMap) {
				if(sessionMap.containsKey(callId)){
					log.warn("callId为 {} 的会话已经存在，不再重新缓存。");
					return false;
				}
				else{
					sessionMap.put(callId, sipSession);
					log.info("添加session成功。callId：{}", sipSession.getCallId());
					return true;
				}
			}
		}
		else{
			log.info("添加session失败。. callId：{}", sipSession.getCallId());
			return false;
		}
			
	}
}
